//
//  Virtual_table.hpp
//  learnC++
//
//  Created by liuzhibing on 2018/6/15.
//  Copyright © 2018年 yunfan.com. All rights reserved.
//

#ifndef Virtual_table_hpp
#define Virtual_table_hpp

#include <stdio.h>
#include <iostream>

class Base10
{
public:
//    FunctionPointer *__vptr;
    virtual void function1() {};
    virtual void function2() {};
    
    //编译器默认生成一个虚函数指针指向虚函数表
    //该类中的虚函数表包含类目：function1和function2
};

class D1: public Base10
{
public:
    virtual void function1() {};
    //继承虚函数指针
    //该类中的虚函数表包含类目：重写的D1::function1和function2
};

class D3: public Base10
{
public:
    virtual void function2() {};
    //继承虚函数指针
    //该类中的虚函数表包含类目：function1和重写的D2::function2
};

/*
 D3 d3;
 Base *dPtr = &d3;//指向同一个地址，直接查找该 虚拟表vPtr地址
 dPtr->function2();
 */



#endif /* Virtual_table_hpp */
